//////////////////////////////////////////////////////////////////////////////////
//	Copyright 2011 by Yosef Grabivker, ryuho@homenetworksoft.com
//
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////
//Defines
#ifndef __RT_EXCEPTION_YG_H__
#define __RT_EXCEPTION_YG_H__

enum cExcReason {
	cERNone=0,
	cEROtherException,
	cERWrongObjectState,
	cERFailed,
	cERWrongUserOrPassword,
	cERParam,
	cERObjectNotFound,
	cERNoFreeMem,
	cERSysCall,
	cEROperationCanceledByUser,
	cERInvalidHostOrPort,
	cERStartSSHConversation,
	cERSSHKeysNotSupported,
	cERSSHKeysEmpty,
	cERSSHKeysAuthFailed,
	cERShellNotComptble

};

struct CRTException
{
							CRTException(cExcReason rs):m_cReason(rs) {}
	cExcReason				GetReason() { return m_cReason; }

	static class  wxString  FormatReason( cExcReason reason );
private:
	const cExcReason		m_cReason;
};

#define THROW_EXC(x) throw CRTException(x)

#endif